home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 22 / AMIGAplus Sonderheft 22 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Vollversion / BankManager Version 1.6 / BankManager / POSTBANK.MPL < prev   
Text File  |  1999-11-08  |  20KB  |  1,200 lines

  1. '
  2. ' Bankkommunikationsskript für POSTBANK.
  3. '
  4. ' Erste Erstellung: 01.07.1993
  5. ' Letzte Änderung : 14.12.1998
  6. ' Autor: Christian Kaben
  7. '
  8.  
  9. LISTFILE$ := "BankManager:LISTFILE.PBK"
  10. EINUEB$ := "BankManager:EINUEB"
  11. SAMUEB$ := "BankManager:SAMUEB"
  12. SAMLST$ := "BankManager:SAMLST"
  13. EINUEBE$ := "BankManager:EINUEBE"
  14. SAMUEBE$ := "BankManager:SAMUEBE"
  15. SAMLSTE$ := "BankManager:SAMLSTE"
  16. KSTAND$ := "BankManager:KTOSTAND.PBK"
  17. AUSZUG$ := "BankManager:AUSZUG.PBK"
  18. UEBEXTENSION$ := ".PBK"
  19.  
  20. 'Maximale Länge von Empfänger- und Textfeldern.
  21. MAX_EM_LEN:=27
  22. MAX_TX_LEN:=27
  23.  
  24. open #1,LISTFILE$,"r"
  25. 'Version
  26. INPUT$:=input$ #1
  27. 'Einzelüberweisung
  28. INPUT$:=input$ #1
  29. EINUEB := val(INPUT$)
  30. 'überweisung
  31. INPUT$:=input$ #1
  32. 'überweisung
  33. INPUT$:=input$ #1
  34. 'überweisung
  35. INPUT$:=input$ #1
  36. 'überweisung
  37. INPUT$:=input$ #1
  38. 'Sammelüberweisung
  39. INPUT$:=input$ #1
  40. SAMUEB := val(INPUT$)
  41. 'Sammellastschrift
  42. INPUT$:=input$ #1
  43. SAMLAS := val(INPUT$)
  44. 'Kontoauszüge holen?
  45. INPUT$:=input$ #1
  46. AUSZUG := val(INPUT$)
  47. 'Datum letzter Kontoauszug
  48. INPUT$:=input$ #1
  49. LAUSZUG$ := INPUT$
  50. 'Kontostand abfragen?
  51. INPUT$:=input$ #1
  52. STAND := val(INPUT$)
  53. 'PIN
  54. INPUT$:=input$ #1
  55. PIN$ := INPUT$
  56. 'Startseite
  57. INPUT$:=input$ #1
  58. STARTSEITE$ := INPUT$
  59. 'Kontonummer
  60. INPUT$:=input$ #1
  61. KONTONR$ := INPUT$
  62. 'Kennwort 1
  63. INPUT$:=input$ #1
  64. 'Kennwort 2
  65. INPUT$:=input$ #1
  66. 'Kennwort 3
  67. INPUT$:=input$ #1
  68. 'Kennwort 4
  69. INPUT$:=input$ #1
  70. 'Einzelüberweisung EURO
  71. INPUT$:=input$ #1
  72. EINUEBE := val(INPUT$)
  73. 'Sammelüberweisung EURO
  74. INPUT$:=input$ #1
  75. SAMUEBE := val(INPUT$)
  76. 'Sammellastschrift EURO
  77. INPUT$:=input$ #1
  78. SAMLASE := val(INPUT$)
  79.  
  80. close #1
  81.  
  82.  
  83.  
  84. if(STARTSEITE$ <> "")
  85. '        Erst einmal auf die Nullseite springen. Damit
  86. '        verlasse ich ggf. auch einen ER (normalerweise).
  87.     send(ini$+"0"+ter$)
  88.     wait(1,0,0,30000)
  89. '        Bankrechner aufrufen.
  90.     send(ini$+STARTSEITE$+ter$)
  91.     wait(1,0,0,30000)
  92.     send(KONTONR$)
  93.     if(len(KONTONR$) < 10)
  94.         send(ter$)
  95.     endif
  96.     wait(1,0,0,30000)
  97.     send(PIN$)
  98.     wait(1,0,0,30000)
  99.     send("10")
  100.     wait(1,0,0,30000)
  101.     send("19")
  102.     wait(1,0,0,30000)
  103.     ZEILE$ := line$(24)
  104. '        Prüfung auf fehlgeschlagenen Versuch.
  105.     if((left$(ZEILE$,1) <> "") and (left$(ZEILE$,1) <> " "))
  106.         split(2)
  107.         print "Zugang fehlgeschlagen!"
  108.         sleep(5000)
  109.         split(0)
  110.         goto ENDE:
  111.     endif
  112.     send("0")
  113.     wait(1,0,0,30000)
  114. endif
  115.  
  116. if(STAND > 0)
  117.     gosub KTOSTAND:
  118. endif
  119. MAXUEB := EINUEB
  120. if(MAXUEB > 0)
  121.     gosub EINUEB:
  122. endif
  123. MAXUEB := EINUEBE
  124. if(MAXUEB > 0)
  125.     gosub EINUEBE:
  126. endif
  127. MAXUEB := SAMUEB
  128. if(MAXUEB > 0)
  129.     gosub SAMUEB:
  130. endif
  131. MAXUEB := SAMUEBE
  132. if(MAXUEB > 0)
  133.     gosub SAMUEBE:
  134. endif
  135. MAXUEB := SAMLAS
  136. if(MAXUEB > 0)
  137.     gosub SAMLAS:
  138. endif
  139. MAXUEB := SAMLASE
  140. if(MAXUEB > 0)
  141.     gosub SAMLASE:
  142. endif
  143. if(AUSZUG > 0)
  144.     gosub UMSAETZE:
  145. endif
  146.  
  147.  
  148. ENDE:
  149. end
  150.  
  151.  
  152.  
  153.  
  154. '
  155. ' K O N T O S T A N D
  156. '
  157.  
  158. KTOSTAND:
  159. ' Kontostandmaske aufrufen.
  160. send("10")
  161. wait(1,0,0,30000)
  162. DATUM$ := ""
  163. ZEIT$ := ""
  164. STAND$ := ""
  165. STANDE$ := ""
  166. ' Datum und Uhrzeit auslesen
  167. LINE$ := line$(8)
  168. if(len(LINE$) > 9)
  169.     LINE$ := mid$(LINE$,10,40)
  170. endif
  171. if(len(LINE$) = 0)
  172.     return
  173. endif
  174. while(left$(LINE$,1) = " ")
  175.     LINE$ := mid$(LINE$,2,40)
  176. wend
  177. if(len(LINE$) = 0)
  178.     return
  179. endif
  180. while(left$(LINE$,1) <> " ")
  181.     LINE$ := mid$(LINE$,2,40)
  182. wend
  183. if(len(LINE$) = 0)
  184.     return
  185. endif
  186. while(left$(LINE$,1) = " ")
  187.     LINE$ := mid$(LINE$,2,40)
  188. wend
  189. if(len(LINE$) = 0)
  190.     return
  191. endif
  192. while(left$(LINE$,1) <> " ")
  193.     DATUM$ := DATUM$ + left$(LINE$,1)
  194.     LINE$ := mid$(LINE$,2,40)
  195. wend
  196. if(len(LINE$) = 0)
  197.     return
  198. endif
  199. while(left$(LINE$,1) = " ")
  200.     LINE$ := mid$(LINE$,2,40)
  201. wend
  202. if(len(LINE$) = 0)
  203.     return
  204. endif
  205. while(left$(LINE$,1) <> " ")
  206.     ZEIT$ := ZEIT$ + left$(LINE$,1)
  207.     LINE$ := mid$(LINE$,2,40)
  208. wend
  209. ' Betrag DM auslesen
  210. LINE$ := line$(10)
  211. if(len(LINE$) > 9)
  212.     LINE$ := mid$(LINE$,11,40)
  213. endif
  214. if(len(LINE$) = 0)
  215.     return
  216. endif
  217. while(left$(LINE$,1) = " ")
  218.     LINE$ := mid$(LINE$,2,40)
  219. wend
  220. if(len(LINE$) = 0)
  221.     return
  222. endif
  223. while(left$(LINE$,1) <> " ")
  224.     STAND$ := STAND$ + left$(LINE$,1)
  225.     LINE$ := mid$(LINE$,2,40)
  226. wend
  227. ' Betrag EURO auslesen
  228. LINE$ := line$(11)
  229. if(len(LINE$) > 9)
  230.     LINE$ := mid$(LINE$,11,40)
  231. endif
  232. if(len(LINE$) = 0)
  233.     return
  234. endif
  235. while(left$(LINE$,1) = " ")
  236.     LINE$ := mid$(LINE$,2,40)
  237. wend
  238. if(len(LINE$) = 0)
  239.     return
  240. endif
  241. while(left$(LINE$,1) <> " ")
  242.     STANDE$ := STANDE$ + left$(LINE$,1)
  243.     LINE$ := mid$(LINE$,2,40)
  244. wend
  245. open #1,KSTAND$,"w"
  246. print #1,DATUM$
  247. print #1,ZEIT$
  248. print #1,STAND$
  249. print #1,STANDE$
  250. close #1
  251. send("0")
  252. wait(1,0,0,30000)
  253. return
  254.  
  255.  
  256.  
  257.  
  258.  
  259. '
  260. ' E I N Z E L Ü B E R W E I S U N G E N
  261. '
  262.  
  263. EINUEB:
  264. ' Test, ob nicht schon alle versandt worden sind.
  265. COUNTMAX := MAXUEB
  266. COUNTNAME$ := EINUEB$
  267. gosub COUNTOPEN:
  268. if(COUNTMAX = 0)
  269.     return
  270. endif
  271. ISEURO := 0
  272. ANWFILENAME$ := EINUEB$
  273. gosub EUEB:
  274. return
  275.  
  276. EINUEBE:
  277. ' Test, ob nicht schon alle versandt worden sind.
  278. COUNTMAX := MAXUEB
  279. COUNTNAME$ := EINUEBE$
  280. gosub COUNTOPEN:
  281. if(COUNTMAX = 0)
  282.     return
  283. endif
  284. ISEURO := 1
  285. ANWFILENAME$ := EINUEBE$
  286. gosub EUEB:
  287. return
  288.  
  289.  
  290. EUEB:
  291.  
  292. ' Überweisungseingabemaske aufrufen.
  293. send("20")
  294. wait(1,0,0,30000)
  295. TAN$ := ""
  296. UNTERSCHRIFT$ := ""
  297. BASELINE := 6
  298. BASECOL := 10
  299. SESENDCURR := 1
  300.  
  301. ' Ab hier Einspielen der Datensätze.
  302. for i:=1 to MAXUEB
  303. '        TAN als leer initialisieren, da jeder Auftrag ja seine
  304. '        eigene TAN hat (im Gegensatz zu den Sammlern).
  305.     TAN$ := ""
  306.     GLOBALERROR := 0
  307.     FILENAME$ := ANWFILENAME$+str$(i-1)+UEBEXTENSION$
  308. '        Einspielen des aktuellen Datensatzes.
  309.     gosub SENDENTRY:
  310. 'split(10)
  311. 'print GLOBALERROR
  312. 'sleep(5000)
  313. 'split(0)
  314.     if(GLOBALERROR = -1)
  315. 'split(10)
  316. 'print "NEXT erkannt"
  317. 'sleep(3000)
  318. 'split(0)
  319. goto LABEL11:
  320.         next
  321.     endif
  322. '    Auftragsbestätigung j/n
  323. send(ter$)
  324. '    Als Abrufüberweisung speichern j/n
  325. send(ter$)
  326. wait(1,0,0,30000)
  327. '    Termin (Tag, Monat, Jahr)
  328. send(ter$)
  329. send(ter$)
  330. send(ter$)
  331. wait(1,0,0,30000)
  332.  
  333. LABEL11:
  334.  
  335. '        Vergleich des aktuellen Datensatzes mit der Anzeige seitens Btx.
  336.     GLOBALERROR := 0
  337.     FILENAME$ := ANWFILENAME$+str$(i-1)+UEBEXTENSION$
  338. 'split(5)
  339. 'print "1"
  340. 'sleep(1000)
  341. 'split(0)
  342. loop11:
  343.     gosub CHECK:
  344.     if(GLOBALERROR=-1)
  345. goto LABEL12:
  346.         next
  347.     endif
  348.  
  349. 'split(5)
  350. 'print "2"
  351. 'sleep(1000)
  352. 'split(0)
  353.     if(GLOBALERROR <> 0)
  354. '            Anzeige weicht vom Eingespielten ab. Also erneut einspielen.
  355.         send("1")
  356.         wait(1,0,0,30000)
  357.         gosub SENDENTRY:
  358.         if(GLOBALERROR=-1)
  359. goto LABEL12:
  360.             next
  361.         endif
  362.         goto loop11:
  363.     endif
  364. 'split(5)
  365. 'print "3"
  366. 'sleep(1000)
  367. 'split(0)
  368.  
  369.     if(TAN$ = "")
  370.         split(5)
  371.         print "Keine TAN vorhanden !!!"
  372.         sleep(10000)
  373.         split(0)
  374.         goto ENDE:
  375.     endif
  376.     send(TAN$)
  377.     wait(1,0,0,30000)
  378. '        Erfolgreich eingespielten Datensatz als erledigt markieren.
  379.     gosub DELETEENTRY:
  380.  
  381.     if(i < MAXUEB)
  382. '            Es kommen noch mehr Überweisungen.
  383.         send(ter$)
  384.     else
  385.         send("0")
  386.     endif
  387.     wait(1,0,0,30000)
  388. LABEL12:
  389. next
  390.  
  391. return
  392.  
  393.  
  394.  
  395.  
  396.  
  397. '
  398. ' S A M M E L Ü B E R W E I S U N G E N
  399. '
  400.  
  401. SAMUEB:
  402. ' Test, ob nicht schon alle versandt worden sind.
  403. COUNTMAX := 1
  404. COUNTNAME$ := SAMUEB$
  405. gosub COUNTOPEN:
  406. if(COUNTMAX = 0)
  407.     return
  408. endif
  409. ISEURO := 0
  410. ANWFILENAME$ := SAMUEB$
  411. gosub SUEB:
  412. return
  413.  
  414. SAMUEBE:
  415. ' Test, ob nicht schon alle versandt worden sind.
  416. COUNTMAX := 1
  417. COUNTNAME$ := SAMUEBE$
  418. gosub COUNTOPEN:
  419. if(COUNTMAX = 0)
  420.     return
  421. endif
  422. ISEURO := 1
  423. ANWFILENAME$ := SAMUEBE$
  424. gosub SUEB:
  425. return
  426.  
  427.  
  428. SUEB:
  429.  
  430. send("21")
  431. wait(1,0,0,30000)
  432.  
  433. gosub CLEAROLD:
  434.  
  435. send("90")
  436. wait(1,0,0,30000)
  437. if(errno<>0)
  438.     wait(1,0,0,30000)
  439. endif
  440. LINE$ := line$(7)
  441. LSTNR$ := mid$(LINE$,15,6)
  442. 'split(10)
  443. 'print LSTNR$
  444. 'sleep(2000)
  445. 'split(0)
  446. TAN$ := ""
  447. UNTERSCHRIFT$ := ""
  448. BASELINE := 8
  449. BASECOL := 8
  450. SESENDCURR := 1
  451.  
  452. ' Ab hier Einspielen der Datensätze.
  453. for i:=1 to MAXUEB
  454.     GLOBALERROR := 0
  455.     FILENAME$ := ANWFILENAME$+str$(i-1)+UEBEXTENSION$
  456.  
  457.     gosub SENDENTRY:
  458.     SESENDCURR := 0
  459. 'split(10)
  460. 'print GLOBALERROR
  461. 'sleep(5000)
  462. 'split(0)
  463.     if(GLOBALERROR=-1)
  464. 'split(10)
  465. 'print "NEXT erkannt"
  466. 'sleep(3000)
  467. 'split(0)
  468. goto LABEL21:
  469.         next
  470.     endif
  471.  
  472.     if(i < MAXUEB)
  473. '            Es folgen noch weitere Überweisungen.
  474.         send(ter$)
  475.     else
  476. '            Es folgen keine weitere Überweisungen.
  477.         send("9")
  478.     endif
  479.     wait(1,0,0,30000)
  480.     if(cur_y = (BASELINE - 1))
  481.         BS := BASELINE - 1
  482.         PR$ := line$(BS)
  483.         PR$ := mid$(PR$,34,3)
  484.         if(len(PR$) > 0)
  485.             if(PR$ <> "   ")
  486. '                    Dann ist der Auftrag fehlerhaft, da seitens
  487. '                    der Bank die verwendete Kombination BLZ und
  488. '                    Kontonummer abgelehnt wurde.
  489.                 split(5)
  490.                 print "Auftrag fehlerhaft!"
  491.                 sleep(10000)
  492.                 split(0)
  493. '                    Wenn ich dann BLZ und Kontonummer noch einmal
  494. '                    schlicht bestätige, wird das dann trotzdem
  495. '                    angenommen. Ausnahme bildet dann nur eine
  496. '                    falsche Kontoverbindung bei einem Postbankkonto